MCP 클라이언트 구축의 마지막 단계는 프롬프트 기능을 구현하는 것입니다. 이를 통해 서버에서 사용 가능한 모든 프롬프트를 나열하고 변수가 채워진 특정 프롬프트를 검색할 수 있습니다.
프롬프트 목록 구현
list_prompts 메서드는 간단합니다. 세션의 프롬프트 목록 함수를 호출하고 프롬프트를 반환합니다:
async def list_prompts(self) -> list[types.Prompt]:
result = await self.session().list_prompts()
return result.prompts
개별 프롬프트 가져오기
get_prompt 메서드는 변수 보간을 처리하기 때문에 더 흥미롭습니다. 프롬프트를 요청할 때 키워드 인자로 프롬프트 함수에 전달되는 인자를 제공합니다:
async def get_prompt(self, prompt_name, args: dict[str, str]):
result = await self.session().get_prompt(prompt_name, args)
return result.messages
예를 들어, 서버에 doc_id 매개변수를 기대하는 format_document 프롬프트가 있다면, 인자 딕셔너리에는 {"doc_id": "plan.md"}가 포함됩니다. 이 값은 프롬프트 템플릿에 보간됩니다.
프롬프트 실행 테스트
구현이 완료되면 CLI를 통해 프롬프트를 테스트할 수 있습니다. 슬래시(/)를 입력하면 사용 가능한 프롬프트가 명령으로 표시됩니다. "format" 같은 프롬프트를 선택하면 사용 가능한 문서 중에서 선택하라는 메시지가 표시됩니다.

문서를 선택하면 시스템이 완성된 프롬프트를 Claude에게 전송합니다. AI는 서식 지정 지침과 문서 ID를 모두 받은 다음, 사용 가능한 도구를 사용하여 콘텐츠를 가져오고 처리합니다.
프롬프트 작동 방식

프롬프트는 클라이언트가 사용할 수 있는 사용자 및 어시스턴트 메시지 세트를 정의합니다. 고품질이고, 잘 테스트되었으며, MCP 서버의 목적과 관련이 있어야 합니다. 워크플로는 다음과 같습니다:
- 서버 기능과 관련된 프롬프트를 작성하고 평가하기
@mcp.prompt 데코레이터를 사용하여 MCP 서버에서 프롬프트 정의하기
- 클라이언트가 언제든지 프롬프트를 요청할 수 있음
- 클라이언트가 제공한 인자가 프롬프트 함수의 키워드 인자가 됨
- 함수가 AI 모델을 위해 포맷된 메시지를 반환
이 시스템은 변수를 통한 커스터마이징을 허용하면서 일관성을 유지하는 재사용 가능한 파라미터화된 프롬프트를 생성합니다. AI가 매번 올바르게 구조화된 지침을 받도록 보장하려는 복잡한 워크플로에 특히 유용합니다.